package com.java8.lambda;

import java.util.Optional;

import org.junit.jupiter.api.Test;

public class OptionalTest {

	/**
	 * Optional相关api
	 */
	@Test
	public void test1() {
		/**
		 * Optional.of 创建一个Optional实例 
		 * Optional.empty(); 创建一个空实例 
		 * Optional.ofNullable 如果为空创建一个空实例，不为空返回原值 
		 * option1.isPresent() 是否有值，有值返回为true,无值返回false
		 * option1.orElse(new Employee("张三",12)); 没有值就返回一个默认值
		 * option1.orElseGet也是返回一个默认值，但是可以传入lambda表达式构建对象
		 * option1.get() 获取Optional实例
		 * map和flatmap方法和Stream的方法类似，都是Optional实力当中属性转换使用
		 * 
		 */
		// Optional<Employee> option=Optional.of(new Employee());
		// System.out.println(option.get());
		Optional<Employee> option1 = Optional.ofNullable(new Employee());
		Employee employee = option1.get();
		option1 = Optional.empty();
		if (option1.isPresent())
			System.out.println(employee);
		else {
			Employee orElse = option1.orElse(new Employee("张三",12));
			Employee orElseGet = option1.orElseGet(Employee::new);
			System.out.println(orElse);
			System.out.println(orElseGet);
		}

	}

}
